package main

import "fmt"

// 定义一个struct    方式 type + 大写的名字 + struct关键词 {}

type Animal struct {
	Name     string
	Category string
}

func (a *Animal) ChangeName(name string) {
	a.Name = name
}
func main() {
	// 实例化struct 的几种方式
	// 1. 定义一个struct 通过var 定义的 结构体 并未初始化,他是一个默认的结构体 他不是nil
	var a1 Animal
	a1.Name = "小黑"
	a1.Category = "dog"

	// 2. 简短定义 直接赋值属性
	var a2 = Animal{
		Name:     "小白",
		Category: "cat",
	}
	fmt.Println(a1, a2)
	// 3. 结构体后面加 {}，表示声明结构体。
	var a3 = Animal{}
	a3.Name = "小红"
	a3.Category = "pig"
	fmt.Println(a3)
	a3.ChangeName("花花")
	fmt.Println(a3)
}
